import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author 袁强
 * @data 2020/3/23 10:49
 * @Description 测试集合迭代器
 */
public class TestListAndIterator {
    public static void main(String[] args){
        List<User> users = new ArrayList<>();
        User user1 = new User();
        user1.setName("aa");
        user1.setUuid("11");
        User user2 = new User();
        user2.setName("bb");
        user2.setUuid("22");
        User user3 = new User();
        user3.setName("cc");
        user3.setUuid("33");
        users.add(user1);
        User user4 = new User();
        user4.setName("dd");
        user4.setUuid("44");
        users.add(user4);
        users.add(user3);
        users.add(user2);
        System.out.println("集合元素: "+users.toString());
        /**
          * 个人理解:
         * 1.迭代本质就是循环,既然是循环就要使用循环语句while或者for
         * 2.next方法,指向下一个元素或者对象,Iterator迭代器每调用一次next方法,当前迭代器就指向下一个元素或者方法
         */
        Iterator<User> iterator = users.iterator();
        System.out.println("正确使用迭代器 start...");
        while (iterator.hasNext()){
            User user = iterator.next();
            System.out.println("当前循环次数所指向的元素为 :"+ user.getUuid());
            if(user.getName().equals("cc")){
                System.out.println("移除集合cc :"+ user.getName());
                iterator.remove();
            }
        }
        System.out.println(users.toString());
        System.out.println("正确使用迭代器 end...");

        Iterator<User> iterator1 = users.iterator();
        System.out.println("异常使用迭代器 start...");
        while (iterator1.hasNext()){
            System.out.println("当前循环次数所指向的元素为 :"+ iterator1.next().getUuid());
            if(iterator1.next().getName().equals("cc")){
                System.out.println("移除集合cc :"+ iterator1.next().getName());
                iterator1.remove();
            }
        }
        System.out.println(users.toString());
        System.out.println("异常使用迭代器 end...");
    }
}
